home *** CD-ROM | disk | FTP | other *** search
/ Apple WWDC 1996 / WWDC96_1996 (CD).toast / Technology Materials / MacOS 8 Resources / Developer Tools / Mac OS 8 Interfaces & Libraries / Interfaces / CIncludes / Connections.h < prev    next >
C/C++ Source or Header  |  1996-05-01  |  13KB  |  385 lines

  1. /*
  2.      File:        Connections.h
  3.  
  4.      Contains:    Communications Toolbox Connection Manager Interfaces.
  5.  
  6.      Version:    Technology:    System 7.5
  7.                  Release:    Universal Interfaces 3.0d3 on Copland DR1
  8.  
  9.      Copyright:    © 1984-1996 by Apple Computer, Inc.  All rights reserved.
  10.  
  11.      Bugs?:        If you find a problem with this file, send the file and version
  12.                  information (from above) and the problem description to:
  13.  
  14.                      Internet:    apple.bugs@applelink.apple.com
  15.                      AppleLink:    APPLE.BUGS
  16.  
  17. */
  18. #ifndef __CONNECTIONS__
  19. #define __CONNECTIONS__
  20.  
  21. #ifndef __WINDOWS__
  22. #include <Windows.h>
  23. #endif
  24. #ifndef __DIALOGS__
  25. #include <Dialogs.h>
  26. #endif
  27. #ifndef __CTBUTILITIES__
  28. #include <CTBUtilities.h>
  29. #endif
  30.  
  31. #ifdef __cplusplus
  32. extern "C" {
  33. #endif
  34.  
  35. #if PRAGMA_IMPORT_SUPPORTED
  36. #pragma import on
  37. #endif
  38.  
  39. #if PRAGMA_ALIGN_SUPPORTED
  40. #pragma options align=mac68k
  41. #endif
  42.  
  43. #if FOR_SYSTEM7_ONLY
  44.  
  45. enum {
  46.                                                                 /*    current Connection Manager version    */
  47.     curCMVersion                = 2,                            /*    current Connection Manager Environment Record version     */
  48.     curConnEnvRecVers            = 0,                            /* CMErr */
  49.     cmGenericError                = -1,
  50.     cmNoErr                        = 0,
  51.     cmRejected                    = 1,
  52.     cmFailed                    = 2,
  53.     cmTimeOut                    = 3,
  54.     cmNotOpen                    = 4,
  55.     cmNotClosed                    = 5,
  56.     cmNoRequestPending            = 6,
  57.     cmNotSupported                = 7,
  58.     cmNoTools                    = 8,
  59.     cmUserCancel                = 9,
  60.     cmUnknownError                = 11
  61. };
  62.  
  63. typedef OSErr CMErr;
  64.  
  65. enum {
  66.     cmData                        = 1L << 0,
  67.     cmCntl                        = 1L << 1,
  68.     cmAttn                        = 1L << 2,
  69.     cmDataNoTimeout                = 1L << 4,
  70.     cmCntlNoTimeout                = 1L << 5,
  71.     cmAttnNoTimeout                = 1L << 6,
  72.     cmDataClean                    = 1L << 8,
  73.     cmCntlClean                    = 1L << 9,
  74.     cmAttnClean                    = 1L << 10,                        /*        Only for CMRecFlags (not CMChannel) in the rest of this enum    */
  75.     cmNoMenus                    = 1L << 16,
  76.     cmQuiet                        = 1L << 17,
  77.     cmConfigChanged                = 1L << 18
  78. };
  79.  
  80. /* CMRecFlags and CMChannel        */
  81. /*        Low word of CMRecFlags is same as CMChannel    */
  82. typedef long CMRecFlags;
  83. typedef short CMChannel;
  84.  
  85. enum {
  86.     cmStatusOpening                = 1L << 0,
  87.     cmStatusOpen                = 1L << 1,
  88.     cmStatusClosing                = 1L << 2,
  89.     cmStatusDataAvail            = 1L << 3,
  90.     cmStatusCntlAvail            = 1L << 4,
  91.     cmStatusAttnAvail            = 1L << 5,
  92.     cmStatusDRPend                = 1L << 6,                        /* data read pending    */
  93.     cmStatusDWPend                = 1L << 7,                        /* data write pending    */
  94.     cmStatusCRPend                = 1L << 8,                        /* cntl read pending    */
  95.     cmStatusCWPend                = 1L << 9,                        /* cntl write pending    */
  96.     cmStatusARPend                = 1L << 10,                        /* attn read pending    */
  97.     cmStatusAWPend                = 1L << 11,                        /* attn write pending    */
  98.     cmStatusBreakPend            = 1L << 12,
  99.     cmStatusListenPend            = 1L << 13,
  100.     cmStatusIncomingCallPresent    = 1L << 14,
  101.     cmStatusReserved0            = 1L << 15
  102. };
  103.  
  104. typedef unsigned long CMStatFlags;
  105.  
  106. enum {
  107.     cmDataIn                    = 0,
  108.     cmDataOut                    = 1,
  109.     cmCntlIn                    = 2,
  110.     cmCntlOut                    = 3,
  111.     cmAttnIn                    = 4,
  112.     cmAttnOut                    = 5,
  113.     cmRsrvIn                    = 6,
  114.     cmRsrvOut                    = 7
  115. };
  116.  
  117. typedef unsigned short CMBufFields;
  118. typedef Ptr CMBuffers[8];
  119. typedef long CMBufferSizes[8];
  120. typedef const long *ConstCMBufferSizesParam;
  121.  
  122. enum {
  123.     cmSearchSevenBit            = 1L << 0
  124. };
  125.  
  126. typedef unsigned short CMSearchFlags;
  127.  
  128. enum {
  129.     cmFlagsEOM                    = 1L << 0
  130. };
  131.  
  132. typedef unsigned short CMFlags;
  133. struct ConnEnvironRec {
  134.     short                             version;
  135.     long                             baudRate;
  136.     short                             dataBits;
  137.     CMChannel                         channels;
  138.     Boolean                         swFlowControl;
  139.     Boolean                         hwFlowControl;
  140.     CMFlags                         flags;
  141. };
  142. typedef struct ConnEnvironRec ConnEnvironRec;
  143.  
  144. typedef ConnEnvironRec *ConnEnvironRecPtr;
  145. typedef struct ConnRecord ConnRecord;
  146. typedef ConnRecord *ConnPtr;
  147. typedef ConnPtr *ConnHandle;
  148. typedef pascal long (*ConnectionToolDefProcPtr)(ConnHandle hConn, short msg, long p1, long p2, long p3);
  149. typedef pascal void (*ConnectionSearchCallBackProcPtr)(ConnHandle hConn, Ptr matchPtr, long refNum);
  150. typedef pascal void (*ConnectionCompletionProcPtr)(ConnHandle hConn);
  151. typedef pascal void (*ConnectionChooseIdleProcPtr)(void );
  152.  
  153. #if GENERATINGCFM
  154. typedef UniversalProcPtr ConnectionToolDefUPP;
  155. typedef UniversalProcPtr ConnectionSearchCallBackUPP;
  156. typedef UniversalProcPtr ConnectionCompletionUPP;
  157. typedef UniversalProcPtr ConnectionChooseIdleUPP;
  158. #else
  159. typedef ConnectionToolDefProcPtr ConnectionToolDefUPP;
  160. typedef ConnectionSearchCallBackProcPtr ConnectionSearchCallBackUPP;
  161. typedef ConnectionCompletionProcPtr ConnectionCompletionUPP;
  162. typedef ConnectionChooseIdleProcPtr ConnectionChooseIdleUPP;
  163. #endif
  164. struct ConnRecord {
  165.     short                             procID;
  166.     CMRecFlags                         flags;
  167.     CMErr                             errCode;
  168.     long                             refCon;
  169.     long                             userData;
  170.     ConnectionToolDefUPP             defProc;
  171.     Ptr                             config;
  172.     Ptr                             oldConfig;
  173.     long                             asyncEOM;
  174.     long                             reserved1;
  175.     long                             reserved2;
  176.     Ptr                             cmPrivate;
  177.     CMBuffers                         bufferArray;
  178.     CMBufferSizes                     bufSizes;
  179.     long                             mluField;
  180.     CMBufferSizes                     asyncCount;
  181. };
  182.  
  183.  
  184. enum {
  185.                                                                 /* CMIOPB constants and structure */
  186.     cmIOPBQType                    = 10,
  187.     cmIOPBversion                = 0
  188. };
  189.  
  190. struct CMIOPB {
  191.     QElemPtr                         qLink;
  192.     short                             qType;                        /* cmIOPBQType */
  193.     ConnHandle                         hConn;
  194.     Ptr                             theBuffer;
  195.     long                             count;
  196.     CMFlags                         flags;
  197.     ConnectionCompletionUPP         userCompletion;
  198.     long                             timeout;
  199.     CMErr                             errCode;
  200.     CMChannel                         channel;
  201.     long                             asyncEOM;
  202.     long                             reserved1;
  203.     short                             reserved2;
  204.     short                             version;                    /* cmIOPBversion */
  205.     long                             refCon;                        /* for application */
  206.     long                             toolData1;                    /* for tool */
  207.     long                             toolData2;                    /* for tool */
  208. };
  209. typedef struct CMIOPB CMIOPB;
  210.  
  211. typedef CMIOPB *CMIOPBPtr;
  212.  
  213. enum {
  214.     uppConnectionToolDefProcInfo = kPascalStackBased
  215.          | RESULT_SIZE(SIZE_CODE(sizeof(long)))
  216.          | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(ConnHandle)))
  217.          | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(short)))
  218.          | STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(long)))
  219.          | STACK_ROUTINE_PARAMETER(4, SIZE_CODE(sizeof(long)))
  220.          | STACK_ROUTINE_PARAMETER(5, SIZE_CODE(sizeof(long))),
  221.     uppConnectionSearchCallBackProcInfo = kPascalStackBased
  222.          | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(ConnHandle)))
  223.          | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(Ptr)))
  224.          | STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(long))),
  225.     uppConnectionCompletionProcInfo = kPascalStackBased
  226.          | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(ConnHandle))),
  227.     uppConnectionChooseIdleProcInfo = kPascalStackBased
  228. };
  229.  
  230. #if GENERATINGCFM
  231. #define CallConnectionToolDefProc(userRoutine, hConn, msg, p1, p2, p3)        \
  232.         CallUniversalProc((UniversalProcPtr)(userRoutine), uppConnectionToolDefProcInfo, (hConn), (msg), (p1), (p2), (p3))
  233. #define CallConnectionSearchCallBackProc(userRoutine, hConn, matchPtr, refNum)        \
  234.         CallUniversalProc((UniversalProcPtr)(userRoutine), uppConnectionSearchCallBackProcInfo, (hConn), (matchPtr), (refNum))
  235. #define CallConnectionCompletionProc(userRoutine, hConn)        \
  236.         CallUniversalProc((UniversalProcPtr)(userRoutine), uppConnectionCompletionProcInfo, (hConn))
  237. #define CallConnectionChooseIdleProc(userRoutine)        \
  238.         CallUniversalProc((UniversalProcPtr)(userRoutine), uppConnectionChooseIdleProcInfo)
  239. #else
  240. #define CallConnectionToolDefProc(userRoutine, hConn, msg, p1, p2, p3)        \
  241.         (*(userRoutine))((hConn), (msg), (p1), (p2), (p3))
  242. #define CallConnectionSearchCallBackProc(userRoutine, hConn, matchPtr, refNum)        \
  243.         (*(userRoutine))((hConn), (matchPtr), (refNum))
  244. #define CallConnectionCompletionProc(userRoutine, hConn)        \
  245.         (*(userRoutine))((hConn))
  246. #define CallConnectionChooseIdleProc(userRoutine)        \
  247.         (*(userRoutine))()
  248. #endif
  249.  
  250. #if GENERATINGCFM
  251. #define NewConnectionToolDefProc(userRoutine)        \
  252.         (ConnectionToolDefUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppConnectionToolDefProcInfo, GetCurrentArchitecture())
  253. #define NewConnectionSearchCallBackProc(userRoutine)        \
  254.         (ConnectionSearchCallBackUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppConnectionSearchCallBackProcInfo, GetCurrentArchitecture())
  255. #define NewConnectionCompletionProc(userRoutine)        \
  256.         (ConnectionCompletionUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppConnectionCompletionProcInfo, GetCurrentArchitecture())
  257. #define NewConnectionChooseIdleProc(userRoutine)        \
  258.         (ConnectionChooseIdleUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppConnectionChooseIdleProcInfo, GetCurrentArchitecture())
  259. #else
  260. #define NewConnectionToolDefProc(userRoutine)        \
  261.         ((ConnectionToolDefUPP) (userRoutine))
  262. #define NewConnectionSearchCallBackProc(userRoutine)        \
  263.         ((ConnectionSearchCallBackUPP) (userRoutine))
  264. #define NewConnectionCompletionProc(userRoutine)        \
  265.         ((ConnectionCompletionUPP) (userRoutine))
  266. #define NewConnectionChooseIdleProc(userRoutine)        \
  267.         ((ConnectionChooseIdleUPP) (userRoutine))
  268. #endif
  269. extern pascal CMErr InitCM(void );
  270.  
  271. extern pascal Handle CMGetVersion(ConnHandle hConn);
  272.  
  273. extern pascal short CMGetCMVersion(void );
  274.  
  275. extern pascal ConnHandle CMNew(short procID, CMRecFlags flags, ConstCMBufferSizesParam desiredSizes, long refCon, long userData);
  276.  
  277. extern pascal void CMDispose(ConnHandle hConn);
  278.  
  279. extern pascal CMErr CMListen(ConnHandle hConn, Boolean async, ConnectionCompletionUPP completor, long timeout);
  280.  
  281. extern pascal CMErr CMAccept(ConnHandle hConn, Boolean accept);
  282.  
  283. extern pascal CMErr CMOpen(ConnHandle hConn, Boolean async, ConnectionCompletionUPP completor, long timeout);
  284.  
  285. extern pascal CMErr CMClose(ConnHandle hConn, Boolean async, ConnectionCompletionUPP completor, long timeout, Boolean now);
  286.  
  287. extern pascal CMErr CMAbort(ConnHandle hConn);
  288.  
  289. extern pascal CMErr CMStatus(ConnHandle hConn, CMBufferSizes sizes, CMStatFlags *flags);
  290.  
  291. extern pascal void CMIdle(ConnHandle hConn);
  292.  
  293. extern pascal void CMReset(ConnHandle hConn);
  294.  
  295. extern pascal void CMBreak(ConnHandle hConn, long duration, Boolean async, ConnectionCompletionUPP completor);
  296.  
  297. extern pascal CMErr CMRead(ConnHandle hConn, void *theBuffer, long *toRead, CMChannel theChannel, Boolean async, ConnectionCompletionUPP completor, long timeout, CMFlags *flags);
  298.  
  299. extern pascal CMErr CMWrite(ConnHandle hConn, const void *theBuffer, long *toWrite, CMChannel theChannel, Boolean async, ConnectionCompletionUPP completor, long timeout, CMFlags flags);
  300.  
  301. extern pascal CMErr CMIOKill(ConnHandle hConn, short which);
  302.  
  303. extern pascal void CMActivate(ConnHandle hConn, Boolean activate);
  304.  
  305. extern pascal void CMResume(ConnHandle hConn, Boolean resume);
  306.  
  307. extern pascal Boolean CMMenu(ConnHandle hConn, short menuID, short item);
  308.  
  309. extern pascal Boolean CMValidate(ConnHandle hConn);
  310.  
  311. extern pascal void CMDefault(Ptr *theConfig, short procID, Boolean allocate);
  312.  
  313. extern pascal Handle CMSetupPreflight(short procID, long *magicCookie);
  314.  
  315. extern pascal Boolean CMSetupFilter(short procID, const void *theConfig, short count, DialogPtr theDialog, EventRecord *theEvent, short *theItem, long *magicCookie);
  316.  
  317. extern pascal void CMSetupSetup(short procID, const void *theConfig, short count, DialogPtr theDialog, long *magicCookie);
  318.  
  319. extern pascal void CMSetupItem(short procID, const void *theConfig, short count, DialogPtr theDialog, short *theItem, long *magicCookie);
  320.  
  321. extern pascal void CMSetupXCleanup(short procID, const void *theConfig, short count, DialogPtr theDialog, Boolean OKed, long *magicCookie);
  322.  
  323. extern pascal void CMSetupPostflight(short procID);
  324.  
  325. extern pascal Ptr CMGetConfig(ConnHandle hConn);
  326.  
  327. extern pascal short CMSetConfig(ConnHandle hConn, const void *thePtr);
  328.  
  329. extern pascal OSErr CMIntlToEnglish(ConnHandle hConn, const void *inputPtr, Ptr *outputPtr, short language);
  330.  
  331. extern pascal OSErr CMEnglishToIntl(ConnHandle hConn, const void *inputPtr, Ptr *outputPtr, short language);
  332.  
  333. extern pascal long CMAddSearch(ConnHandle hConn, ConstStr255Param theString, CMSearchFlags flags, ConnectionSearchCallBackUPP callBack);
  334.  
  335. extern pascal void CMRemoveSearch(ConnHandle hConn, long refnum);
  336.  
  337. extern pascal void CMClearSearch(ConnHandle hConn);
  338.  
  339. extern pascal CMErr CMGetConnEnvirons(ConnHandle hConn, ConnEnvironRec *theEnvirons);
  340.  
  341. extern pascal short CMChoose(ConnHandle *hConn, Point where, ConnectionChooseIdleUPP idle);
  342.  
  343. extern pascal void CMEvent(ConnHandle hConn, const EventRecord *theEvent);
  344.  
  345. extern pascal void CMGetToolName(short procID, Str255 name);
  346.  
  347. extern pascal short CMGetProcID(ConstStr255Param name);
  348.  
  349. extern pascal void CMSetRefCon(ConnHandle hConn, long refCon);
  350.  
  351. extern pascal long CMGetRefCon(ConnHandle hConn);
  352.  
  353. extern pascal long CMGetUserData(ConnHandle hConn);
  354.  
  355. extern pascal void CMSetUserData(ConnHandle hConn, long userData);
  356.  
  357. extern pascal void CMGetErrorString(ConnHandle hConn, short id, Str255 errMsg);
  358.  
  359. extern pascal CMErr CMNewIOPB(ConnHandle hConn, CMIOPBPtr *theIOPB);
  360.  
  361. extern pascal CMErr CMDisposeIOPB(ConnHandle hConn, CMIOPBPtr theIOPB);
  362.  
  363. extern pascal CMErr CMPBRead(ConnHandle hConn, CMIOPBPtr theIOPB, Boolean async);
  364.  
  365. extern pascal CMErr CMPBWrite(ConnHandle hConn, CMIOPBPtr theIOPB, Boolean async);
  366.  
  367. extern pascal CMErr CMPBIOKill(ConnHandle hConn, CMIOPBPtr theIOPB);
  368.  
  369. #endif
  370.  
  371. #if PRAGMA_ALIGN_SUPPORTED
  372. #pragma options align=reset
  373. #endif
  374.  
  375. #if PRAGMA_IMPORT_SUPPORTED
  376. #pragma import off
  377. #endif
  378.  
  379. #ifdef __cplusplus
  380. }
  381. #endif
  382.  
  383. #endif /* __CONNECTIONS__ */
  384.  
  385.